package org.rasterfun.language2.block

import org.rasterfun.language2.{Compilable, ValueDef}

/**
 * A hybrid between a structure and a function.
 * Each value can be marked as input, output, or both or neither.
 * The values are evaluated in sequence when the block is constructed by calling it with some parameters.
 * The output values can be queried by their name.
 * The input values can be supplied in sequence, or by their name.
 * Non-output values can not be accessed after creation (they can be temporary during initialization).
 *
 * An instantiated block can be called again, in which case any new parameters replace existing ones,
 * but the rest remain with their current values (?). -> Allows passing partially initialized functions as values.
 * Or just allow passing block types as parameters.
 */
case class Block(values: List[ValueDef]) extends Compilable {
  
}
